#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "malloc.h"

typedef struct
{
	char nombre[50];
	char contrasena[20];
	char cargo[20];
	char telefono[10];
}	usuario;

void guardar()
{
	int tamano, i;
	char kontra=0;
	char leer[20];
	tamano = sizeof (usuario);
	usuario persona;
	FILE *miArchivo;
	printf("Ingrese el nombre de la persona a guardar: ");
	scanf("%s", &persona.nombre);
	printf("Ingrese la contrasena: ");
	scanf("%s", &persona.contrasena);
	printf("Ingrese el cargo: ");
	scanf("%s", &persona.cargo);
	printf("Ingrese el telefono: ");
	scanf("%s", &persona.telefono);
	miArchivo = fopen("datos.txt", "a");
	if(miArchivo == NULL) printf("El archivo NO se puede abrir, vuelva a intentarlo");
	else {fwrite(&persona, tamano, 1, miArchivo); fclose(miArchivo);}
}


usuario consultar(char consulta[])
{
	FILE *miArchivo;
	int tamano;
	tamano = sizeof (usuario);
	usuario persona;
	miArchivo = fopen("datos.txt", "r");
	if(miArchivo == NULL) printf("El Archivo no se puede abrir\n");
	while(fread(&persona, tamano, 1, miArchivo) != 0)
	{
		if(strcmp(persona.nombre, consulta) == 0)
		{
			printf("\nNombre: %s", persona.nombre);
			printf("\nCargo: %s", persona.cargo);
			printf("\nTelefono: %s \n\n", persona.telefono);
		}
	}
	fclose(miArchivo);
}

int modificar(char consulta[])
{
	FILE *miArchivo;
	FILE *pFile;
	int tamano;
	long pos = 0;
	tamano = sizeof (usuario);
	usuario persona;
	usuario personaAux;
	//pFile = tmpfile();
	miArchivo = fopen("datos.txt", "r+");
	if(miArchivo == NULL) printf("El Archivo no se puede abrir\n");
	while(fread(&persona, tamano, 1, miArchivo) != 0)
	{
		if(strcmp(persona.nombre, consulta) == 0)
		{
			pos = ftell(miArchivo);
			printf("Ingrese el nombre de la persona modificada: ");
			scanf("%s", &personaAux.nombre);
			printf("Ingrese la contrasena: ");
			scanf("%s", &personaAux.contrasena);
			printf("Ingrese el cargo: ");
			scanf("%s", &personaAux.cargo);
			printf("Ingrese el telefono: ");
			scanf("%s", &personaAux.telefono);
			fseek(miArchivo, tamano, pos);
			fwrite(&personaAux, pos, 1, miArchivo);
			fclose(miArchivo);
			return 0;
		}
	}
	fclose(miArchivo);
}

void menu()
{
	int opcion;
	char consulta[50];
	printf("-------------------------------MENU-------------------------------\n\n");
	printf("--- Ingresar un usuario ----------------------------------------01\n");
	printf("--- Consultar un usuario ---------------------------------------02\n");
	printf("--- Modificar un usuario ---------------------------------------03\n");
	printf("\nIngrese su opcion: ");
	scanf("%i", &opcion);
	switch(opcion)
	{
		case 1: {guardar(); menu();}
		case 2:{
			printf("Ingrese el nombre de la persona a consultar: ");
			scanf("%s", &consulta);
			consultar(consulta); menu();}
		case 3:{
			printf("Ingrese el nombre de la persona a modificar: ");
			scanf("%s", &consulta);
			modificar(consulta); menu();}
	}
}

int main()
{	
	menu();
	getchar();
}
